package com.taobao.api.response;

import com.taobao.api.internal.mapping.ApiField;
import com.taobao.api.TaobaoObject;

import com.taobao.api.TaobaoResponse;

/**
 * TOP API: tmall.nr.pay.deduct response.
 * 
 * @author top auto create
 * @since 1.0, null
 */
public class TmallNrPayDeductResponse extends TaobaoResponse {

	private static final long serialVersionUID = 2374845614149716975L;

	/** 
	 * result
	 */
	@ApiField("result")
	private NrResult result;


	public void setResult(NrResult result) {
		this.result = result;
	}
	public NrResult getResult( ) {
		return this.result;
	}
	
	/**
 * resultData
 *
 * @author top auto create
 * @since 1.0, null
 */
public static class NrDeductRespDto extends TaobaoObject {

	private static final long serialVersionUID = 7548231267185771376L;

	/**
		 * 渠道支付单号，例如支付宝扣款的会返回支付宝的订单ID，微信支付返回微信支付订单ID，现金场景不会回传
		 */
		@ApiField("channel_pay_order_id")
		private String channelPayOrderId;
		/**
		 * 本次实际支付金额，单位为分，例如订单总金额为200元，支付宝有优惠8元，实际应付192元，本次消费者受余额所限实际仅支付150元（同时有支付宝优惠8元），则应该返回 158元(15000分)
		 */
		@ApiField("current_actual_pay_fee")
		private Long currentActualPayFee;
		/**
		 * 本次应该支付金额，单位为分,（支付宝支付、微信支付场景下在支付时能够享受优惠，导致消费者应付金额可能会大于实际支付金额），例如订单总金额为200元，本次消费者应付200元，支付宝有优惠8元，实际应付192元，则应该返回200元（20000分）
		 */
		@ApiField("current_need_pay_fee")
		private Long currentNeedPayFee;
		/**
		 * 本次支付中所享受的支付优惠金额，单位为分，例如本次支付宝减免了8元，则应该返回8元(800分)
		 */
		@ApiField("current_pay_discount_fee")
		private Long currentPayDiscountFee;
		/**
		 * 本次支付工具，具体枚举值参见入参描述中的pay_channel
		 */
		@ApiField("pay_channel")
		private String payChannel;
		/**
		 * 本次支付请求所对应的流水ID；
		 */
		@ApiField("pay_order_id")
		private String payOrderId;
		/**
		 * 剩余待支付金额，单位为分，例如订单总金额为200元，支付宝优惠8元，消费者本次支付150元，则应该回传42元(4200分)。
		 */
		@ApiField("remain_fee")
		private Long remainFee;
		/**
		 * 请求ID
		 */
		@ApiField("request_id")
		private String requestId;
		/**
		 * 支付状态，总计有三种（如果是同步支付流水没有unknown状态）： 1.	success 2.	fail 3.	unknown
		 */
		@ApiField("status")
		private String status;
	

	public String getChannelPayOrderId() {
			return this.channelPayOrderId;
		}
		public void setChannelPayOrderId(String channelPayOrderId) {
			this.channelPayOrderId = channelPayOrderId;
		}
		public Long getCurrentActualPayFee() {
			return this.currentActualPayFee;
		}
		public void setCurrentActualPayFee(Long currentActualPayFee) {
			this.currentActualPayFee = currentActualPayFee;
		}
		public Long getCurrentNeedPayFee() {
			return this.currentNeedPayFee;
		}
		public void setCurrentNeedPayFee(Long currentNeedPayFee) {
			this.currentNeedPayFee = currentNeedPayFee;
		}
		public Long getCurrentPayDiscountFee() {
			return this.currentPayDiscountFee;
		}
		public void setCurrentPayDiscountFee(Long currentPayDiscountFee) {
			this.currentPayDiscountFee = currentPayDiscountFee;
		}
		public String getPayChannel() {
			return this.payChannel;
		}
		public void setPayChannel(String payChannel) {
			this.payChannel = payChannel;
		}
		public String getPayOrderId() {
			return this.payOrderId;
		}
		public void setPayOrderId(String payOrderId) {
			this.payOrderId = payOrderId;
		}
		public Long getRemainFee() {
			return this.remainFee;
		}
		public void setRemainFee(Long remainFee) {
			this.remainFee = remainFee;
		}
		public String getRequestId() {
			return this.requestId;
		}
		public void setRequestId(String requestId) {
			this.requestId = requestId;
		}
		public String getStatus() {
			return this.status;
		}
		public void setStatus(String status) {
			this.status = status;
		}

}

	/**
 * result
 *
 * @author top auto create
 * @since 1.0, null
 */
public static class NrResult extends TaobaoObject {

	private static final long serialVersionUID = 1635382796793758151L;

	/**
		 * errorCode
		 */
		@ApiField("error_code")
		private String errorCode;
		/**
		 * errorMessage
		 */
		@ApiField("error_message")
		private String errorMessage;
		/**
		 * resultData
		 */
		@ApiField("result_data")
		private NrDeductRespDto resultData;
		/**
		 * success
		 */
		@ApiField("success")
		private Boolean success;
	

	public String getErrorCode() {
			return this.errorCode;
		}
		public void setErrorCode(String errorCode) {
			this.errorCode = errorCode;
		}
		public String getErrorMessage() {
			return this.errorMessage;
		}
		public void setErrorMessage(String errorMessage) {
			this.errorMessage = errorMessage;
		}
		public NrDeductRespDto getResultData() {
			return this.resultData;
		}
		public void setResultData(NrDeductRespDto resultData) {
			this.resultData = resultData;
		}
		public Boolean getSuccess() {
			return this.success;
		}
		public void setSuccess(Boolean success) {
			this.success = success;
		}

}



}
